perm filename ROMITA.MF[1,3]1 blob sn#498469 filedate 1980-03-29 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00019 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	% This file contains accents common to text roman and italic fonts.
C00004 00003	"Grave accent"
C00005 00004	"Acute accent"
C00006 00005	"Circumflex (hat) accent"
C00007 00006	"Hachek (hooklet) accent"
C00008 00007	"Breve accent"
C00009 00008	"Macron (bar) accent"
C00010 00009	"Umlaut (double dot) accent"
C00011 00010	"Tilde (squiggle) accent"
C00012 00011	if ligs≠0: "Arrow (vector) accent"
C00013 00012	if ligs≠0: "Long Hungarian umlaut accent"
C00014 00013	"Scandinavian circle accent"
C00015 00014	"Cedilla accent"
C00016 00015	if ligs≠0: "Cross for Polish l and L"
C00017 00016	if ligs≠0: "Tie accent"
C00018 00017	"Upper case ligature AE"
C00020 00018	"Upper case ligature OE"
C00023 00019	"Per cent sign"
C00026 ENDMK
C⊗;
% This file contains accents common to text roman and italic fonts.
% It also contains the `\AE', `\OE', and `\%', since these symbols are common
% to the same fonts that the accents are common to.
% Character codes \¬015--\¬032, \¬036, \¬037, \¬045 are represented.
% (Actually the accents in positions \¬025, \¬026, \¬031, \¬032 are
% not generated unless $\\{ligs}≠0$, since other symbols are substituted
% for those accents in non-ligature fonts.)
"Grave accent";
call charbegin('015,9,0,0,ph,0,2/3[ph,px].slant+.5pw-pwi/6-19/6pu);
cpen; lft1x1=round 2u; x2=2/3[x1,r-x1];
top1y1=h; y2=2/3[h,m];
call `a cdraw(1,2,1,0).	% diagonal
"Acute accent";
call charbegin('016,9,0,0,ph,0,ph.slant-1.5pu);
cpen; rt1x1=round(r-2u); x2=2/3[x1,r-x1];
top1y1=h; y2=2/3[h,m];
call `a cdraw(1,2,1,0).	% diagonal
"Circumflex (hat) accent";
call charbegin('017,9,0,0,ph,0,.5[px,ph].slant+.5pw-2pu);
x1=good0 2.25u; x2=x4=r-x2; x3=r-x1; % left-right symmetry
new w99; w99=round .5[w6,w8];
vpen; y1=y3=.5[m,y0]; top99y0=top6y2=h; bot99y0=bot6y4;
w6 ddraw 2..1, 4..1;	% left point
ddraw 2..3, 4..3.	% right point
"Hachek (hooklet) accent";
call charbegin('020,9,0,0,.75[px,ph],0,.75[px,ph].slant+.5pw-2pu);
x1=good0 2.25u; x2=x4=r-x2; x3=r-x1;	% left-right symmetry;
new w99; w99=round .5[w6,w8];
vpen; top6y1=round .75[m,h]; y1=y3;
top99y20=h; y21=.5[m,y20]; y1-y0=y20-y21;	% inverted circumflex
top99y0=top6y4; bot99y0=bot0y2;
w6 ddraw 2..1, 4..1;	% left point
ddraw 2..3, 4..3.	% right point
"Breve accent";
call charbegin('021,9,0,0,ph,0,ph.slant+.5pw-1.5pu);
x0=x1=good0 2u; x2=r-x2; x3=x4=r-x1;	% left-right symmetry
new w99; w99=round .25[w6,w8];
y0=y4=1.25[m,h]; y1=y3; y2=1/3[m,h];
vpen; top99y1=h;
draw |w99#|2{-1,0}..|w6#|1(..0);	% left point
draw |w99#|2{1,0}..|w6#|3(..4).		% right point
"Macron (bar) accent";
call charbegin('022,9,0,0,1/3[px,ph]+prt.aspect,0,1/3[px,ph].slant+.5pw-1.5pu);
x1=good0 2u; x2=r-x1; y1=y2;
vpen; new w99; w99=round .25[w6,w8]; bot99y1=1/3[m,h];
w99 draw 1..2.	% bar
"Umlaut (double dot) accent";
call charbegin('023,9,0,0,ph,0,ph.slant+.5pwiii-2pu);
x1=good3 2.5u; x2=r-x1; y1=y2;
cpen; top3y1=h;
w3 draw 1;	% left dot
draw 2.		% right dot
"Tilde (squiggle) accent";
call charbegin('024,9,0,0,ph,0,ph.slant+.5pwi-1.25pu);
x1=1.75u; x4=r-1.75u; x2=.2[x1,x4]; x3=.8[x1,x4];
new aa,bb,rr,costh,sinth,w99;
aa=1/4(x4-x1); bb=.2(h-m); rr=sqrt(aa.aa+bb.bb);
costh=aa/rr; sinth=bb/rr; w99=.5[w0,w1];
spen(4(costh.costh/w99/w99+sinth.sinth/w0/w0),
	8costh.sinth(1/w99/w99-1/w0/w0),
	4(costh.costh/w0/w0+sinth.sinth/w99/w99),
	0,0,0,0);	% oblique pen in direction $\{(x↓4-x↓1)/4,y↓2-y↓1\}$
top0y1=.8[m,h]; top0y2=h; y3=y1; y4=y2;
w0 draw 1{x2-x1,2(y2-y1)}..2{1,0}..3{1,0}..4{x4-x3,2(y4-y3)}.	% points and stroke
if ligs≠0: "Arrow (vector) accent";
	call charbegin('025,9,0,0,.8[px,ph]+prt.aspect/2,0,.5[px,ph]slant);
	cpen; lft10x1=round .5u; x2=r-x1; y1=y2=.5[m,h];
	w10 draw 1..2;	% bar
	rt10x3=round(x2-u); x4=x3;
	y3=y2+.3(h-m); y4=y2-.3(h-m);
	draw 3{.5(x2-x3),y2-y3}..2{x2-x3,.5(y2-y3)};	% upper point
	draw 4{.5(x2-x4),y2-y4}..2{x2-x4,.5(y2-y4)};	% lower point
fi.
if ligs≠0: "Long Hungarian umlaut accent";
	call charbegin('026,9,0,0,ph,0,ph.slant-pu);
	cpen; x1=good0 2.5u; rt1x2=round .5r;
	x3-x1=x4-x2; rt1x4=round(r-1.5u);
	y1=y3=1/3[m,h]; top1y2=h; y2=y4;
	call `a cdraw(2,1,1,0);	% left diagonal
	call `b cdraw(4,3,1,0);	% right diagonal
fi.
"Scandinavian circle accent";
% This character is designed to be used as an ordinary accent on an `a'
% or to be raised ${2\over3}(\\{ph}-\\{px})$ points and superimposed on an `A'.
call charbegin('027,13,0,0,ph,0,0);
x1=good0 5u; x2=x4=r-x2; x3=r-x1;
hpen; top0y2=h+o+oo; top0y4=round 1/3[m,h]+o+oo; y1=y3=.5[y2,y4];
w0 draw 4{-1,0}..1{0,1}..2{1,0};	% left half of bowl
draw 4{1,0}..3{0,1}..2{-1,0}.	% right half of bowl
"Cedilla accent";
% This character is designed to be used as an ordinary accent on a `c'
% or to be superimposed on a `C'.
call charbegin('030,14,0,0,0,.875pd,0);
x1=x2=7.5u; x3=x2+1.5u; x4=x2-1.5u;
new w99; w99=round .5[w0,w1];
hpen; bot1y1=-o; bot1y2=round(-.25d-o);
w1 draw 1..2;	% stem
bot1y4=round(-.875d-o); y3=.5[y2,y4];
draw 2{1,0}..3{0,-1}..4{-1,0}.	% hook
if ligs≠0: "Cross for Polish l and L";
% This character is designed to be used as an ordinary accent on an `l'
% or to be raised $\\{ph}-\\{px}$ points and superimposed on an `L'.
	call charbegin('031,4+pwiv/pu,2sc,2sc,px-(ph-px),0,0);
	hpen; lft4 .5[x1,x2]=2u; x2-x1=3u;
	top0y2+(h-m)=m; y1+(h-m)=e;
	w0 draw 1..2;	% diagonal
fi.
if ligs≠0: "Tie accent";
% This character is tuned to work best with a dotless roman i.
	call charbegin('032,5,sc,sc,ph,0,px.slant+.5pwi+(sc-2)pu);
	x1=good0 .5r; y1=y3=4/9[m,h]; x2=.5[x1,x3]; x3=good0(r+2u);
	vpen; top10y2=h+oo;
	w10 draw 1{0,1}..2{1,0};	% left point
	draw 3{0,1}..2{-1,0};		% right point
fi.
"Upper case ligature AE";
call charbegin('036,16,2sc,sc,phh,0,armic);
hpen; new w99; w99=round .9[w0,w4];
lft99x1=round 7.25u; x2=x1; top99y1=hh; bot99y2=0;
w99 draw1..2;	% stem
call `a serif(1,99,2,-1-ucs-del/u);
if ucs≠0: call `b serif(1,99,2,.5ucs);	% upper stem serif
	call `c serif(2,99,1,-ucs);
	call `d serif(2,99,1,.5ucs);	% lower stem serif
fi;
rt0x3=round(r-1.5u); x4=x3+.5u; y3=y1; y4=y3-as;
rt0x5=round(r-1.25u); x6=x4+.5u; y5=y2; y6=y5+as;
call `e arm(1,3,4);	% upper arm and serif
call `f arm(2,5,6);	% lower arm and serif
x7=x1; y7=.52[y2,y1]; y8=y7;
if ucs≠0: x8=x9=x10=good0(r-4.5u); y9=y8+.7as; y10=y8-.7as;
	if w0=w4: w0 draw 9..10;	% middle arm serif
	else: x11=x8-u; y11=y8;
		minvr 0; minvs 0;
		w0 ddraw 11{1,0}..10{0,-1}, 8..10;
		ddraw 11{1,0}..9{0,1}, 8..9;	% middle arm serif
		minvr .5; minvs .5;
	fi;
else: x8=x4-u;
fi;
w0 draw 7..8;	% middle arm
lft0x21=round 1.5u; bot0y21=0; lft0x27=lft99x1; top0y27=hh; x23=x27-del-u-eps; y23=y27;
w0 draw 23..21;	% left diagonal stroke
y25=y26=e; x26=x27;
new aa; x25-1=aa[x21,x23]; y25=aa[y21,y23];
w0 draw 25..26;	% bar line
if ucs≠0: call `g dserif(21,0,23,-ucs);
	call `h dserif(21,0,23,ucs);	% left serif
fi.
"Upper case ligature OE";
call charbegin('037,18,0,sc,phh,0,armic);
hpen; new w99; w99=round .9[w0,w4];
lft99x1=round 9u; x2=x1; top99y1=hh; bot99y2=0;
w99 draw1..2;	% stem
if ucs≠0:
	call `b serif(1,99,2,.5ucs);	% upper stem serif
	call `d serif(2,99,1,.5ucs);	% lower stem serif
fi;
rt0x3=round(r-1.5u); x4=x3+.5u; y3=y1; y4=y3-as;
rt0x5=round(r-1.25u); x6=x4+.5u; y5=y2; y6=y5+as;
call `e arm(1,3,4);	% upper arm and serif
call `f arm(2,5,6);	% lower arm and serif
x7=x1; y7=.52[y2,y1]; y8=y7;
if ucs≠0: x8=x9=x10=good0(r-4u); y9=y8+.7as; y10=y8-.7as;
	if w0=w4: w0 draw 9..10;	% middle arm serif
	else: x11=x8-u; y11=y8;
		minvr 0; minvs 0;
		w0 ddraw 11{1,0}..10{0,-1}, 8..10;
		ddraw 11{1,0}..9{0,1}, 8..9;	% middle arm serif
		minvr .5; minvs .5;
	fi;
else: x8=x4-u;
fi;
w0 draw 7..8;	% middle arm
if fixwidth≠0: new save; save=sqrttwo;
	new sqrttwo; sqrttwo=sqrt save; % super-superellipse
	lft5x22=round 1.5u;
else: lft5x22=round u;
fi;
x21=7u; top0y21=hh+o; bot0y22=-o;
call `a darc(21,22,w5);	% left part of bowl
x23=x21; y23=y22;
lft0x24=lft99x1; x24=x25; y24=2/3hh; y25=1/3hh;
x26=.85[x21,x24]; y26=.85[y24,y21];
x27=.85[x21,x24]; y27=.85[y25,y23];
w0 draw 21{1,0}..26{x24-x21,y24-y21}..24{0,-1};	% upper right part of bowl
draw 23{1,0}..27{x25-x23,y25-y23}..25{0,1};	% lower right part of bowl
if ucs≠0: if w0≠w4:
	ddraw 21{1,0}..26{x24-x21,y24-y21}..24{0,-1},
		21{1,0}..1{1,0}..1;	% fill in
	ddraw 23{1,0}..27{x25-x23,y25-y23}..25{0,1},
		23{1,0}..2{1,0}..2;	% fill in
	fi;
fi;
if fixwidth≠0: new sqrttwo; sqrttwo=save;
fi.
"Per cent sign";
call charbegin('045,17,0,0,ph+pb,pb,(ph+pb).slant+.5pw-pu);
hpen; x1=2.5u; x2=r-1.5u; bot0y1=-b; top0y2=h+b;
w0 draw 1..2;	% diagonal
lft1x3=round u; rt0x7=round .5(r-3u);
new ss,st; ss=.25(x2-x1)/(y2-y1);	% reciprocal slope for ellipses
y3=y7=.5[y5,y9]; top0y5=h+b; bot0y9=round .5h;
st=1/(sqrt 2); y4=y6=st[y3,y5]; y8=y10=st[y3,y9];
ss(y5-y9)=x5-x9; ss(y4-y10)=x4-x10=x6-x8;
x37=.5[x3,x7]=.5[x5,x9]; .5[x4,x10]=st[x37,x3]; .5[x6,x8]=st[x37,x7];
draw |w1#|3{ss,1}..|5/6[w0,w1]|4{x5-x3+ss(y5-y3),y5-y3}..
	|w0#|5{1,0}..6{x7-x5+ss(y7-y5),y7-y5}..7{-ss,-1}..
	8{x9-x7+ss(y9-y7),y9-y7}..9{-1,0}..
	|5/6[w0,w1]|10{x3-x9+ss(y3-y9),y3-y9}..|w1#|3{ss,1};	% upper bowl
y11=.9[y7,y5]; x11=(sqrt(1-(.9)(.9)))[x37,x7]+ss(y11-y7);	% point on ellipse
y12=.901[y7,y5]; x12=(sqrt(1-(.901)(.901)))[x37,x7]+ss(y12-y7);	% nearby point
w0 draw (12..)11..2{x2-x1,y2-y1};	% link
x13-x3=x14-x4=x15-x5=x16-x6=x17-x7=
	x18-x8=x19-x9=x20-x10=round .5(r+u);
y13-y3=y14-y4=y15-y5=y16-y6=y17-y7=y18-y8=y19-y9=y20-y10;
bot0y19=-b;
draw |w1#|13{ss,1}..|5/6[w0,w1]|14{x5-x3+ss(y5-y3),y5-y3}..
	|w0#|15{1,0}..16{x7-x5+ss(y7-y5),y7-y5}..17{-ss,-1}..
	18{x9-x7+ss(y9-y7),y9-y7}..19{-1,0}..
	|5/6[w0,w1]|20{x3-x9+ss(y3-y9),y3-y9}..|w1#|13{ss,1}.	 %lower bowl